home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1994 December
/
PSL Monthly Shareware CD-ROM (Public Software Library)(December 1994).bin
/
prgmming
/
dos
/
pascal2
/
rgb.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1988-12-21
|
2KB
|
70 lines
program RGB;
{----------------------------------------------------------\
| This program illustrates how to use the SetRGBPalette |
| command from the Turbo Pascal 5.0 Graph unit to create |
| 16 shades of gray on a VGA graphics card. |
| |
| Author : John Sieraski (Borland technical support) |
| Last update: 12/21/88 |
| Ware-ness : Released to the public domain by the author |
\----------------------------------------------------------}
uses
Crt, Graph;
function Int2Str(L : LongInt) : string;
{ Converts an integer to a string for use with OutText, OutTextXY }
var
S : string;
begin
Str(L, S);
Int2Str := S;
end; { Int2Str }
procedure Wait;
{ Wait for key, then flush the buffer }
var
Ch : char;
begin
Ch := ReadKey;
while KeyPressed do
Ch := ReadKey;
end; { Wait }
var
Driver, Mode, ErrorCode, BarHeight, Y : integer;
PalIndex : byte;
begin
Driver := VGA; { Initialize VGA 640x480 graphics mode }
Mode := VGAHi;
InitGraph(Driver, Mode, ''); { Assumes EGAVGA.BGI in default dir }
ErrorCode := GraphResult;
if ErrorCode <> grOK then
begin
Writeln('Error: ', GraphErrorMsg(ErrorCode));
Wait; Halt;
end;
for PalIndex := 0 to 15 do { Set raw colors in palette so that }
SetPalette(PalIndex, PalIndex); { they're in sequence from 0..15 }
for PalIndex := 0 to 15 do { Create gray scale in DACs 0..15 }
SetRGBPalette(PalIndex, PalIndex*4, PalIndex*4, PalIndex*4);
BarHeight := GetMaxY div 16; { Display the gray scale }
Y := 0;
SetColor(GetMaxColor); { Color for 1st 8 OutText calls in loop }
for PalIndex := 0 to 15 do
begin
SetFillStyle(SolidFill, PalIndex);
Bar(0, Y, GetMaxX, Y+BarHeight);
if PalIndex = 8 then
SetColor(0); { Color for last 8 OutText calls }
OutTextXY(10, Y+(BarHeight div 2), Int2Str(PalIndex));
Inc(Y, BarHeight);
end;
Wait; CloseGraph;
end.